// 导入ajax模块，用于发送HTTP请求
import { ajax, isLogin } from '../utils/ajax.js';

// 导入jQuery库，用于简化DOM操作和事件处理
import '../lib/jquery.js';

// 导入正则表达式校验函数，用于验证输入数据的格式
import { nickTest, sexTest, ageTest } from '../utils/reg.js';

// 使用立即执行的异步函数表达式来避免变量污染全局命名空间
(async function() {
    // 调用isLogin函数检查用户是否已经登录
    let { status, user, token } = await isLogin();
    
    // 如果登录状态码status不等于1，说明用户未登录或登录状态失效
    if (status !== 1) {
        alert('请先登录！');
        // 重定向到登录页面
        location.href = './login.html';
        return; // 退出函数执行
    }
    
    // 使用jQuery将用户信息填充到表单的对应字段中
    $('.username').val(user.username);
    $('.age').val(user.age);
    $('.gender').val(user.gender);
    $('.nickname').val(user.nickname);

    // 为表单绑定提交事件处理器
    $('form').on('submit', async function(e) {
        // 阻止表单的默认提交行为
        e.preventDefault();

        // 获取用户在表单中输入的年龄、性别和昵称
        let age = $('.age').val().trim(); // 使用trim()移除可能的前后空格
        let gender = $('.gender').val().trim();
        let nickname = $('.nickname').val().trim();

        // 校验输入数据是否为空
        if (!age) return alert('年龄不能为空');
        if (!gender) return alert('性别不能为空');
        if (!nickname) return alert('昵称不能为空');

        // 使用正则表达式校验输入数据的格式
        if (!ageTest(age)) return alert('年龄格式错误');
        if (!sexTest(gender)) return alert('性别格式错误');
        if (!nickTest(nickname)) return alert('昵称格式错误');

        // 准备要发送到服务器的数据对象
        let data = {
            id: user.id, // 用户ID
            age, // 年龄
            gender, // 性别
            nickname // 昵称
        };

        // 发送异步HTTP POST请求到服务器的'/users/update'端点
        let response = await ajax.post('/users/update', data, {
            headers: {
                authorization: token // 将用户token设置到请求头中
            }
        });

        // 检查服务器响应的code字段，确定操作是否成功
        if (response.data.code !== 1) {
            // 如果操作失败，弹出错误提示
            return alert('修改失败');
        }

        // 如果操作成功，弹出成功提示
        alert('修改成功');
    });
})();